package com.tinet.autentia.autentificador.dao;

import java.util.ArrayList;
import java.util.List;

import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.persistence.EntityManager;
import javax.persistence.Query;

import com.tinet.autentia.autentificador.model.Administrador;
import com.tinet.autentia.autentificador.model.Usuario;

/**
 * 
 * Clase UsuarioDAO.
 * 
 * @author Frmancil
 */
public class UsuarioDAO implements InterfazUsuarioDAO {
    /**
     * Manejador de entidad.
     */
    private EntityManager em;

    /**
     * 
     * Constructor de UsuarioDAO con entity manager.
     * 
     * @param em
     *            Manejador de entidad.
     */
    public UsuarioDAO(EntityManager em) {
        this.em = em;
    }

    /**
     * {@inheritDoc}
     */
    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public void agregar(Usuario nuevoUsuario) {
        em.persist(nuevoUsuario);
    }

    /**
     * {@inheritDoc}
     */
    public void borrarLogico(Usuario usuarioAEliminar) {

    }

    /**
     * {@inheritDoc}
     */
    public void reactivar(Usuario usuarioAEliminar) {

    }

    /**
     * {@inheritDoc}
     */
    public void actualizar(Usuario usuarioAActualizar) {

    }

    /**
     * {@inheritDoc}
     */
    public Usuario leer(String username) {
        return null;
    }

    /**
     * {@inheritDoc}
     */
    public Usuario buscar(Usuario usuarioABuscar) {
        return null;
    }

    /**
     * {@inheritDoc}
     */
    public void listar() {
        Query q = em.createQuery("SELECT u FROM usuario u join administrador on u.username= administrador.username");
        Administrador admin =(Administrador) q.getSingleResult();
        System.out.println(admin.getUsername());
        System.out.println(admin.getNombres());
        System.out.println(admin.getApellidoPaterno());
        System.out.println(admin.getAprellidoMaterno());
        System.out.println(admin.getFechaNacimiento());
        System.out.println(admin.getCorreo());
        System.out.println(admin.getFono());
        System.out.println(admin.getRemuneracion());
        

        
    }
}
